#ifndef IOBSERVER_H
#define IOBSERVER_H

class QString;
class QVariant;

namespace core
{

class IObservableObject;

class IObserver
{
public:
    virtual void notify(IObservableObject* source,
        const QString& property, const QVariant& value) = 0;
};

class IObservableObject
{
public:
    virtual void addObserver(const QString& property,
        IObserver* observer) = 0;
    virtual void removeObserver(const QString& property,
        IObserver* observer) = 0;
    virtual void removeObservers(const QString& property) = 0;
};

} // namespace core

#endif
